using Headsight.BPMN2WF.BPMN.Model;

namespace Headsight.BPMN2WF.Transformation.BPMN2TransformerMappings.Additions
{
    /// <summary>
    /// Base implementation for <see cref="IBPMN2WFTransformations"/> implementations
    /// delegating to and decorating respective results of <see cref="IBPMN2WFTransformations"/>
    /// implementations.
    /// </summary>
    public abstract class BPMN2WFTransformationsDelegateBaseImpl : IBPMN2WFTransformations
    {
        protected BPMN2WFTransformationsDelegateBaseImpl(IBPMN2WFTransformations @delegate)
        {
            Delegate = @delegate;
        }

        public IBPMN2WFTransformations Delegate { get; protected set; }

        public virtual string Name
        {
            get { return GetType().FullName; }
        }

        public abstract IBPMN2WFTransformation Get(BPMNFlowNode flowNode);
    }
}